//#include<iostream>
//#include<thread>
//#include<vector>
//#include<time.h>
//#include"FixSizeConcurrentMemoryPool.hpp"
//#include"TCMalloc.hpp"
//
//
//using std::cout;
//using std::endl;
//using namespace FixSizeMemoryPoolModule;
//
//struct TreeNode
//{
//    int _val;
//    TreeNode* _left;
//    TreeNode* _right;
//    TreeNode()
//        : _val(0), _left(nullptr), _right(nullptr)
//    {
//    }
//};
//void TestObjectPool()
//{
//    // 申请释放的轮次
//    const size_t Rounds = 5;
//    // 每轮申请释放多少次
//    const size_t N = 1000000;
//
//    std::vector<TreeNode*> v1;
//    v1.reserve(N);
//    size_t begin1 = clock();
//    for (size_t j = 0; j < Rounds; ++j)
//    {
//        for (int i = 0; i < N; ++i)
//        {
//            v1.push_back(new TreeNode);
//        }
//        for (int i = 0; i < N; ++i)
//        {
//            delete v1[i];
//        }
//        v1.clear();
//    }
//    size_t end1 = clock();
//
//    FixSizeMemoryPool<TreeNode> TNPool;
//    std::vector<TreeNode*> v2;
//    v2.reserve(N);
//    size_t begin2 = clock();
//    for (size_t j = 0; j < Rounds; ++j)
//    {
//        for (int i = 0; i < N; ++i)
//        {
//            v2.push_back(TNPool.New());
//        }
//        for (int i = 0; i < 100000; ++i)
//        {
//            TNPool.Delete(v2[i]);
//        }
//        v2.clear();
//    }
//    size_t end2 = clock();
//
//    cout << "new cost time:" << end1 - begin1 << endl;
//    cout << "object pool cost time:" << end2 - begin2 << endl;
//}
//void run1()
//{
//    std::vector<void*>  v;
//    for (int i = 0; i < 7; i++)
//    {
//        void* tc = TCMalloc::Malloc(5);
//        v.push_back(tc);
//    }
//    for (auto e : v)
//    {
//        TCMalloc::Free(e);
//    }
//
//
//}
//void run2()
//{
//    std::vector<void*>  v;
//    for (int i = 0; i < 7; i++)
//    {
//        void* tc = TCMalloc::Malloc(5);
//        v.push_back(tc);
//    }
//    for (auto e : v)
//    {
//        TCMalloc::Free(e);
//    }
//
//}
//
//void Test()
//{
//    void* tc1 = TCMalloc::Malloc(6);
//    void* tc2 = TCMalloc::Malloc(8);
//    void* tc3 = TCMalloc::Malloc(1);
//    void* tc4 = TCMalloc::Malloc(1);
//    void* tc5 = TCMalloc::Malloc(8);
//    void* tc6 = TCMalloc::Malloc(8);
//    void* tc7 = TCMalloc::Malloc(8);
//    void* tc8= TCMalloc::Malloc(8);
//    void* tc9= TCMalloc::Malloc(8);
//    void* tc10 = TCMalloc::Malloc(8);
//    TCMalloc::Free(tc1);
//    TCMalloc::Free(tc2);
//    TCMalloc::Free(tc3);
//    TCMalloc::Free(tc4);
//    TCMalloc::Free(tc5);
//    TCMalloc::Free(tc6);
//    TCMalloc::Free(tc7);
//    TCMalloc::Free(tc8);
//    TCMalloc::Free(tc9);
//    TCMalloc::Free(tc10);
//}
//
//void Test2()
//{
//    std::thread t1(run1);
//    std::thread t2(run2);
//    t1.join();
//    t2.join();
//}
//int main()
//{
//     //TestObjectPool();
//    Test();
//    //void* tc = TCMalloc::Malloc(257*8*1024);
//    //TCMalloc::Free(tc);
//    return 0;
//}
//
